home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48hor1
/
toasc.lst
< prev
next >
Wrap
File List
|
1991-01-29
|
5KB
|
92 lines
\->ASC
80000: 02D9D ! Program
80005: 1592D ; Set last RPL token to <0h> and verify DEPTH >= 1
8000A: 03188 ; Internal DUP
8000F: 05944 ; Internal BYTES (non-ROM objects) -> (2:System Binary,1:Binary Integer)
80014: 03223 ; Internal SWAP
80019: 055DF ; ""
8001E: 032C2 ; Internal OVER
80023: 6257A ; Internal add 4 (1:System Binary)
80028: 03188 ; Internal DUP
8002D: 64BDA ; <40h>
80032: 03EF7 ; Internal / (2:System Binary,1:System Binary) -> (2:rem,1:div)
80037: 03223 ; Internal SWAP
8003C: 03CA6 ; if TOS = 0 (System Binary) -> True/False
80041: 619BC ; if pop TOS != True, then skip next token
80046: 03E0E ; Internal subtract one (1:System Binary)
8004B: 03DBC ; Internal + (2:System Binary,1:System Binary)
80050: 03E6F ; Internal multiply by 2 (1:System Binary)
80055: 61C1C ; allocate nibbles (2:sized object,1:System Binary)
8005A: 03223 ; Internal SWAP
; *** (4:orig object,3:checksum,2:alloc str,1:size) ***
8005F: 02DCC ! Code
80064: 000CD ! 205 nibbles (next RPL at 80131)
80069: 8F14660 GOSBVL 06641 ; MC: pop TOS (System Binary) -> A.A
80070: CC A=A-1 A ; A.A = size-1
80072: 8FB9760 GOSBVL 0679B ; MC: save D0,D1,B,D (uses C,D0), clear carry
80079: 840 ST=0 0 ; start object phase
8007C: 3104 LCHEX 40 ! "@"
80080: AE7 D=C B ; D (characters per line) = 64
80083: D8 B=A A ; B.A = size-1
80085: 143 A=DAT1 A ; A.A = adr of alloc str
80088: 130 D0=A ; D0 = adr of alloc str
8008B: 169 D0=D0+ 10 ; D0 = adr of alloc str data
8008E: 174 D1=D1+ 5 ; point to checksum on stack
80091: 147 C=DAT1 A ; C.A = adr of checksum
80094: 06 RSTK=C ; save adr of checksum
80096: 174 D1=D1+ 5 ; point to orig object
80099: 143 A=DAT1 A ; A.A = adr of orig object
8009C: 131 D1=A ; D1 = adr of orig object
; *** Verify RAM object ***
8009F: 1534 A=DAT1 S ; A.S = first nibble of object
800A3: AC6 C=A S ; C.S = first nibble of object
800A6: B44 A=A+1 S ; modify A.A's copy of data
800A9: 1514 DAT1=A S ; and try to update memory
800AD: 1534 A=DAT1 S ; fetch nibble back
800B1: 94690 ?A#C S ; go if RAM (changed)
GOYES 800BD
800B6: 8D9B026 GOVLNG 620B9 ; MC: restore regs and push True
800BD: 1554 DAT1=C S ; fix RAM (replace orig nibble)
800C1: A6F D=D-1 B ; count character in line
800C4: 531 GONC 800D8 ; go if not EOL
800C7: 31F3 LCHEX 3F ! "?" ; reset D for new line (D=63)
800CB: AE7 D=C B ; ...
800CE: 31A0 LCHEX 0A ! "."
800D2: 14C DAT0=C B ; append line feed
800D5: 161 D0=D0+ 2 ; ...
800D8: AE2 C=0 B ; convert nibble to character
800DB: 15F0 C=DAT1 1
800DF: 8082103 LAHEX 30 ! "0"
800E6: A62 C=C+A B
800E9: 8082193 LAHEX 39 ! "9"
800F0: 9EEC0 ?A>=C B
GOYES 800FF
800F5: 8082170 LAHEX 07 ! "."
800FC: A62 C=C+A B
800FF: 14C DAT0=C B ; store character into string
80102: 161 D0=D0+ 2 ; next character
80105: 170 D1=D1+ 1 ; next nibble
80108: CD B=B-1 A ; decr nibbles remaining
8010A: 56B GONC 800C1 ; go if more
8010D: 870A1 ?ST=1 0 ; exit if checksum in progress
GOYES 8012A
80112: 850 ST=1 0 ; start checksum phase
80115: 3430000 LCHEX 00003 ; B.A = 3 (size of checksum - 1)
8011C: D5 B=C A ; ...
8011E: 07 C=RSTK ; C = adr of checksum
80120: 135 D1=C ; D1 = adr of checksum
80123: 179 D1=D1+ 10 ; D1 = adr of checksum data
80126: 6A9F GOTO 800C1 ; go process checksum
8012A: 8D2D026 GOVLNG 620D2 ; MC: restore regs and push False
. . . . . . ! End of Code
; *** (4:orig object,3:checksum,2:new string,1:True/False) ***
80131: 61993 ; if pop TOS = True, then do next/return, else skip next
80136: 02D9D ! Program
8013B: 03258 ; Internal DROP2
80140: [...] ! "ROM Object"
8015E: 1A339 ; DOERR (XLIB 2 42)
80163: 0312B ! End Marker
80168: 6112A ; drop level two and three objects
8016D: 0312B ! End Marker